// 定义一个对象类型 
type Student = {
  name: string,
  age: number
}
type MyType = string | number

const stu0: Student = {
  name: '小花',
  age: 18
}
// 接口
interface IStudent {
  name: string
  age: number
}

// 使用接口定义对象
const stu1: IStudent = {
  name: '小花',
  age: 18
}


// 区别1
//  - type不限于对象，它也可以自定义其他的类型。type更加强大
//  - interface只能定义对象
// 区别2
// interface可以继承，type不能

{
  // 接口继承
  interface IPoint2D {
    x: number,
    y: number
  }
  const p1: IPoint2D = { x:1, y:1 }

  // interface IPoint3D{
  //   x: number,
  //   y: number,
  //   z: number 
  // }
  // 接口继承： 接口1会包含所有接口2的属性
  // interface 接口1 extends 接口2 {
  //   // 接口1的自己的类型
  // }

  interface IPoint3D extends IPoint2D {
    z: number
  }
  const p2: IPoint3D = {x: 1, y:1, z:100}

}

